/**
 * 移库系统配置文件
 * 完全参考JH拣货系统的成功模式，使用动态配置获取
 */

// 环境读取工具（完全参考JH项目的成功模式）
const readEnv = (ids = [], fallback = '') => {
  try {
    let cfg = null;
    if (typeof window !== 'undefined') {
      const candidates = [window, window.parent, window.top].filter(Boolean)
      for (const w of candidates) {
        // 兼容多种注入位置：mdye.env.config（已发布）、mdye.env（开发调试）、window.env（极个别场景）
        const c1 = w && w.mdye && w.mdye.env && w.mdye.env.config ? w.mdye.env.config : null
        const c2 = !c1 && w && w.mdye && w.mdye.env ? w.mdye.env : null
        const c3 = !c1 && !c2 && w && w.env ? w.env : null
        const c = c1 || c2 || c3
        if (c) { cfg = c; break }
      }
    }
    if (!cfg) return fallback;
    const idList = Array.isArray(ids) ? ids : [ids];
    for (const key of idList) {
      if (!key) continue;
      // 支持点语法、下划线语法、原样
      if (cfg[key] != null && cfg[key] !== '') return cfg[key];
      const underscoreKey = String(key).replace(/\./g, '_');
      if (cfg[underscoreKey] != null && cfg[underscoreKey] !== '') return cfg[underscoreKey];
    }
    return fallback;
  } catch (_) {
    return fallback;
  }
};

// 工作表ID配置（来自 mdye.env.config，可回退到默认值）
export const WORKSHEET_IDS = {
  // 库位库存表ID
  get LOCATION_STOCK() { return readEnv('LOCATION_STOCK', ''); },
  // 移库单工作表ID
  get TRANSFER_ORDERS() { return readEnv('TRANSFER_ORDERS', ''); },
  // 库位管理工作表ID
  get LOCATION_MANAGEMENT() { return readEnv('LOCATION_MANAGEMENT', ''); }
};

// API配置（变量id：AppKey、Sign、SecretKey等）
export const API_CONFIG = {
  get baseURL() { return readEnv(['apiAddress', 'API_BASE_URL'], 'https://www.dachen.vip/api/v2/open/worksheet'); },
  get appKey() { return readEnv('AppKey', ''); },
  get sign() { return readEnv('Sign', ''); },
  get secretKey() { return readEnv('SecretKey', ''); }
};

// Webhook配置
export const WEBHOOK_CONFIG = {
  get webhookUrl() { return readEnv(['webhookUrl', 'webhookURL'], ''); }
};

// 调试快照：返回关键配置（敏感值打码）
export const getConfigSnapshot = () => {
  const mask = v => (typeof v === 'string' && v.length > 8) ? `${v.slice(0,4)}***${v.slice(-4)}` : (v ?? '')
  try {
    const cfg = (typeof window !== 'undefined' && ((window.mdye && window.mdye.env && window.mdye.env.config) || (window.parent && window.parent.mdye && window.parent.mdye.env && window.parent.mdye.env.config) || (window.top && window.top.mdye && window.top.mdye.env && window.top.mdye.env.config))) || {}
    return {
      keys: Object.keys(cfg || {}),
      values: {
        AppKey: mask(API_CONFIG.appKey),
        Sign: mask(API_CONFIG.sign),
        SecretKey: mask(API_CONFIG.secretKey),
        LOCATION_STOCK: mask(WORKSHEET_IDS.LOCATION_STOCK),
        TRANSFER_ORDERS: mask(WORKSHEET_IDS.TRANSFER_ORDERS),
        LOCATION_MANAGEMENT: mask(WORKSHEET_IDS.LOCATION_MANAGEMENT),
        webhookUrl: mask(WEBHOOK_CONFIG.webhookUrl)
      }
    }
  } catch (e) {
    return { keys: [], values: {} }
  }
}

// 字段ID配置（硬编码，但可以通过环境变量覆盖）
export const FIELD_IDS = {
  // ================= 移库单表字段 =================
  TRANSFER_TYPE: '6864d7ae4e2949f411990f05',              // 移库类型
  TRANSFER_NUMBER: '6864d7ae4e2949f411990eff',            // 移库单号
  TRANSFER_STATUS: '6864d7ae4e2949f411990f00',            // 移库状态
  TRANSFER_CREATE_TIME: '6864d7ae4e2949f411990f01',       // 创建时间
  TRANSFER_FROM_LOCATION: '68a6c2f6096ba6d65c501566',    // 移出库位
  TRANSFER_TO_LOCATION: '68a6c2f6096ba6d65c501565',      // 移入库位
  TRANSFER_QUANTITY: '68a6c55a096ba6d65c501671',          // 移库数量
  
  // ================= 库位库存表字段 =================  
  LOCATION_CODE: '6889e3ac0f7d67ebf38c5ac2',              // 库位编码
  PRODUCT_NAME: '688321482430e5add306b0c6',               // 商品名称
  PRODUCT_BARCODE: '688321df2430e5add306b0e7',            // 商品条码
  SUPPLIER_NAME: '688320a62430e5add306b0a0',              // 供应商名称
  PRODUCTION_DATE: '6879ee6d8371cd243659b10a',            // 生产日期
  LOCKED_STOCK: '689e6d52a92ea0c35cc9ae9f',               // 库存数量（锁定库存）
  STOCK_QUANTITY: '689e6d52a92ea0c35cc9aea0',             // 总库存数量
  AVAILABLE_STOCK: '6891613df6303e511c9a76ba',            // 可用库存
  
  // ================= 库位管理表字段 =================
  LOCATION_MANAGEMENT_CODE: '6889df0af6303e511c9a2a63'    // 库位管理表中的库位编码字段
};

// 导出给外部调试使用的配置获取方法
export const getEnvValue = (key) => {
  return readEnv(key, '');
};

// 导出所有配置
export default {
  WORKSHEET_IDS,
  API_CONFIG,
  WEBHOOK_CONFIG,
  FIELD_IDS,
  getEnvValue,
  getConfigSnapshot
};